package com.yidu.t286.controller;
/*
 * @description:
 * @author:文杰
 * @date  :2021/7/27 0027上午 10:57
 */

import com.yidu.t286.biz.impl.VehicleBizImpl;
import com.yidu.t286.domain.Vehicle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller //restful风格代码
@CrossOrigin
public class VehicleController {

    @Autowired
    private VehicleBizImpl vehicleBiz;

    /**
     * 按条件对用户集合对象进行分页查询
     * @param req 请求对象
     * @param page 页数
     * @param limit 行数
     * @return map集合
     */
    @GetMapping("/vehicle")
    public Map<String,Object> selectDrug(HttpServletRequest req, int page, int limit){
        //定义用于构造多条件查询的车辆信息对象
        Vehicle vehicle=new Vehicle();
        //调用数据方法，根据车辆信息对象构造查询条件字符串
        String condition=vehicleBiz.getCondition(vehicle);
        //执行多条件分页查询
        List<Vehicle> vehicleList=vehicleBiz.findByPage(limit,page,condition);
        //多条件查询表中总记录数
        int totalRows=vehicleBiz.count(condition);

        //定义映射集合对象
        Map<String,Object> mapData=new HashMap<String,Object>();
        //在映射集合中添加key为code，值为0的状态码
        mapData.put("code",0);
        //在映射集合中添加key为msg,值为响应信息字符串
        mapData.put("msg","");
        //在映射集合中添加key为count,值总行数的数据对
        mapData.put("count",totalRows);
        //在映射集合中添加key为data,值为车辆信息集合对象
        mapData.put("data",vehicleList);
        //直接返回对象
        return mapData;
    }

    /**
     * 跟据车辆信息编号删除数据
     * @param vehicleId 车辆信息编号
     * @return 信息字符串
     */
    @DeleteMapping("/vehicle/{vehicleId}")
    public String deleteById(@PathVariable int vehicleId){
        //调用业务层代码删除车辆
        int rows=vehicleBiz.delete(vehicleId);
        //判断返回值
        if (rows>0){
            //删除成功
            return "delete success";
        }else{
            //删除失败
            return "delete failure";
        }
    }

    /**
     * 添加车辆信息对象
     * @param vehicle 车辆信息对象
     * @return 信息字符串
     */
    @PostMapping("/vehicle")
    public String add(@RequestBody Vehicle vehicle){
        //添加车辆信息对象到数据库表
        int rows=vehicleBiz.add(vehicle);
        return rows>0?"add success":"add failure";
    }

    /**
     * 修改车辆信息
     * @param vehicle 车辆信息对象
     * @return  信息字符串
     */
    @PutMapping("/vehicle")
    public String update(@RequestBody Vehicle vehicle){
        //修改车辆信息对象到表
        int rows=vehicleBiz.update(vehicle);
        return rows>0?"update success":"update failure";
    }

    /**
     * 循环删除车辆信息对象
     * @param vehicleStr 车辆信息编号字符串
     * @return 信息字符串
     */
    public String batchDelById(@RequestParam String vehicleStr){
        //对车辆信息编号字符串按照","分割
        String[] vehicleIds=vehicleStr.split(",");
        //定义一个返回值
        String result="delete success";
        //循环删除
        for (String str:vehicleIds){
            //转换类型
            int vehicleId=Integer.parseInt(str);
            //调用业务层删除记录
            int rows=vehicleBiz.delete(vehicleId);
            //判断
            if (rows<=0){
                result="batch delete failure";
                break;
            }
        }
        return result;
    }

    @RequestMapping("/showvehicle")
    @ResponseBody
    public List<Vehicle> getAllEmps(){
        System.out.println("dsaf");
        List<Vehicle> vehicleList=vehicleBiz.findAll();
        return vehicleList;
    }


}
